package com.yxw.yx_hotel.service;

import com.yxw.yx_hotel.dto.RoleAddDTO;
import com.yxw.yx_hotel.dto.RoleDeleteDTO;
import com.yxw.yx_hotel.dto.RoleQueryDTO;
import com.yxw.yx_hotel.dto.RoleUpdateDTO;
import com.yxw.yx_hotel.entity.YxCsRoleMenuEntity;
import com.yxw.yx_hotel.vo.RoleVO;
import com.yxw.yx_hotel.vo.YxCsMenuVo;
import com.yxw.yxnet_cd_center.common.dto.PageVO;

import java.util.List;

/**
 * 角色管理Service接口
 *
 * @author xiexuxin
 * @date 2023-09-18
 */
public interface IRoleService {

    /**
     * 添加角色
     * @param roleDTO
     */
    void addRole(RoleAddDTO roleDTO);

    /**
     * 删除角色
     * @param deleteDTO
     */
    void deleteByRoleIds(RoleDeleteDTO deleteDTO);

    /**
     * 角色启用/禁用
     * @param roleId
     */
    void updateRoleStatusById(Long roleId);

    /**
     * 更新角色
     * @param roleDTO
     */
    void updateRole(RoleUpdateDTO roleDTO);

    /**
     * 根据Id查询角色
     * @param roleId
     * @return
     */
    RoleVO selectRoleById(Long roleId);

    /**
     * 编辑角色菜单权限
     * @param roleMenus
     */
    void updateRoleMenuByRoleId(YxCsRoleMenuEntity roleMenus);

    /**
     * 角色列表条件查询
     * @param roleQueryDTO
     * @return
     */
    PageVO<RoleVO> getRoleList(RoleQueryDTO roleQueryDTO);

    /**
     * 查询角色列表
     * @return
     */
    List<RoleVO> roleList();

    /**
     * 查询启用角色列表
     * @return
     */
    List<RoleVO> roleListByStatus();

    /**
     * 根据角色返回菜单树
     * @param roleId
     * @return
     */
    List<YxCsMenuVo> getMenuTreeByRoleMenu(Long roleId);


}
